package com.tza.web.t_net.client.sceens;

import com.google.gwt.user.client.ui.Composite;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.ButtonItem;
import com.smartgwt.client.widgets.form.fields.HeaderItem;
import com.smartgwt.client.widgets.form.fields.PasswordItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.form.fields.events.ClickEvent;
import com.smartgwt.client.widgets.form.fields.events.ClickHandler;
import com.smartgwt.client.widgets.layout.VLayout;
import com.tza.web.t_net.client.ActionContext;
import com.tza.web.t_net.client.AuthenticationEvent;
import com.tza.web.t_net.client.data.LoginDS;

public class LoginComposant extends Composite
{

   private VLayout     layout    = new VLayout(15);
   private DynamicForm formLogin = new DynamicForm();
   ActionContext       actionContext;

   public LoginComposant(ActionContext mainActionContext)
   {

      actionContext = mainActionContext;

      DataSource dataSource = LoginDS.getInstance();

      // Initialisation du widget
      initWidget(layout);

      // Création du formulaire
      formLogin.setDataSource(dataSource);
      formLogin.setUseAllDataSourceFields(true);

      // Titre
      HeaderItem header = new HeaderItem();
      header.setDefaultValue("Connexion");

      // Login
      final TextItem login = new TextItem();
      login.setName("login");

      // Mot de passe
      final PasswordItem mdp = new PasswordItem();
      mdp.setName("mdp");
      mdp.setTitle("Mot de passe");
      mdp.setRequired(true);
      mdp.setLength(20);

      // Bouton de validation
      ButtonItem validateItem = new ButtonItem();
      validateItem.setTitle("Validate");
      validateItem.addClickHandler(new ClickHandler()
      {
         public void onClick(ClickEvent event)
         {
            if (formLogin.validate(false))
            {

               if ("tawfiq".equals(login.getEnteredValue()) && "zed".equals(mdp.getEnteredValue()))
               {

                  actionContext.getMainEventBus().fireEvent(new AuthenticationEvent());
                  layout.setVisible(false);
               }

            }
            else
            {
               // Validation échouée
            }
         }
      });

      formLogin.setFields(header, login, mdp, validateItem);

      // Ajout du formulaire
      layout.addMember(formLogin);

      // Affichage du Widget
      layout.draw();

   }

}
